treeview: Add add() function to accessible
authorBenjamin Otte <otte@redhat.com>
Mon, 12 Dec 2011 15:02:02 +0000 (16:02 +0100)
committerBenjamin Otte <otte@redhat.com>
Fri, 16 Dec 2011 03:53:14 +0000 (04:53 +0100)
... and use that to emit the insertion signals.

gtk/a11y/gtktreeviewaccessible.c
gtk/a11y/gtktreeviewaccessible.h
gtk/gtktreeview.c

index 9fcc21e7bb617b1b5da9090ca3cf7535d40e0362..b48129512eef6d9a74e5f130586d5302da7e7a93 100644 (file)
@@ -1749,9 +1749,6 @@ model_row_inserted (GtkTreeModel *tree_model,
       else
         n_inserted = 1;
 
-      /* Generate row-inserted signal */
-      g_signal_emit_by_name (atk_obj, "row-inserted", row, n_inserted);
-
       /* Generate children-changed signals */
       n_cols = get_n_columns (tree_view);
       for (child_row = row; child_row < (row + n_inserted); child_row++)
@@ -2430,6 +2427,32 @@ get_header_from_column (GtkTreeViewColumn *tv_col)
   return rc;
 }
 
+void
+_gtk_tree_view_accessible_add (GtkTreeView *treeview,
+                               GtkRBTree   *tree,
+                               GtkRBNode   *node)
+{
+  GtkTreeViewAccessible *accessible;
+  guint row, n_rows;
+
+  accessible = GTK_TREE_VIEW_ACCESSIBLE (_gtk_widget_peek_accessible (GTK_WIDGET (treeview)));
+  if (accessible == NULL)
+    return;
+
+  if (node == NULL)
+    {
+      row = tree->parent_tree ? _gtk_rbtree_node_get_index (tree->parent_tree, tree->parent_node) : 0;
+      n_rows = tree->root->total_count;
+    }
+  else
+    {
+      row = _gtk_rbtree_node_get_index (tree, node);
+      n_rows = 1 + (node->children ? node->children->root->total_count : 0);
+    }
+
+  g_signal_emit_by_name (accessible, "row-inserted", row, n_rows);
+}
+
 void
 _gtk_tree_view_accessible_remove (GtkTreeView *treeview,
                                   GtkRBTree   *tree,
@@ -2701,10 +2724,5 @@ _gtk_tree_view_accessible_expanded (GtkTreeView *treeview,
   _gtk_tree_view_accessible_add_state (treeview,
                                        tree, node,
                                        GTK_CELL_RENDERER_EXPANDED);
-
-  g_signal_emit_by_name (obj,
-                         "row-inserted",
-                         _gtk_rbtree_node_get_index (tree, node),
-                         node->children->root->total_count);
 }
 
index 677eb3b8af3d0b731b4fbd26e44997a6294f8df6..aa23536d7f13d5ea790b0da61447300c22fbf245 100644 (file)
@@ -53,6 +53,9 @@ GType _gtk_tree_view_accessible_get_type (void);
 
 /* called by treeview code */
 void            _gtk_tree_view_accessible_reorder       (GtkTreeView       *treeview);
+void            _gtk_tree_view_accessible_add           (GtkTreeView       *treeview,
+                                                         GtkRBTree         *tree,
+                                                         GtkRBNode         *node);
 void            _gtk_tree_view_accessible_remove        (GtkTreeView       *treeview,
                                                          GtkRBTree         *tree,
                                                          GtkRBNode         *node);
index e00c8377704aeeab63e36767959570c9385c17a5..22cc8b8d2e3f86d277738d65223398871f288f0b 100644 (file)
@@ -8870,6 +8870,8 @@ gtk_tree_view_row_inserted (GtkTreeModel *model,
       tmpnode = _gtk_rbtree_insert_after (tree, tmpnode, height, FALSE);
     }
 
+  _gtk_tree_view_accessible_add (tree_view, tree, tmpnode);
+
  done:
   if (height > 0)
     {
@@ -11475,6 +11477,7 @@ gtk_tree_view_set_model (GtkTreeView  *tree_view,
        {
          tree_view->priv->tree = _gtk_rbtree_new ();
          gtk_tree_view_build_tree (tree_view, tree_view->priv->tree, &iter, 1, FALSE);
+          _gtk_tree_view_accessible_add (tree_view, tree_view->priv->tree, NULL);
        }
       gtk_tree_path_free (path);
 
@@ -12758,6 +12761,7 @@ gtk_tree_view_real_expand_row (GtkTreeView *tree_view,
                            gtk_tree_path_get_depth (path) + 1,
                            open_all);
 
+  _gtk_tree_view_accessible_add (tree_view, node->children, NULL);
   _gtk_tree_view_accessible_expanded (tree_view, tree, node);
 
   if (animate)